SUMMARY:
The function name summarizes it quite well.  It's a small function.
It loads the address you currently have selected, the old value it had, and applies that old value to it.
It doesn't have the 3 second delay so you execute the code constantly.
As long as you are holding L1 + Up, you will apply an old value to an address.


200ffc98 8f0d0004 lw t5, $0004(t8)            Load the address from address 000ffff4 you want to apply a value to.
{
    OR SIGNED BYTE
200ffc9c 830a0008 lb t2, $0008(t8)            Load the old signed byte from address 000ffff8.
    OR UNSIGNED BYTE
200ffc9c 930a0008 lbu t2, $0008(t8)           Load the old unsigned byte from address 000ffff8.
    OR 2 SIGNED BYTES
200ffc9c 870a0008 lh t2, $0008(t8)            Load the 2 old signed bytes from address 000ffff8.
    OR 2 UNSIGNED BYTES
200ffc9c 970a0008 lhu t2, $0008(t8)           Load the 2 old unsigned bytes from address 000ffff8.
    OR 4 SIGNED BYTES
200ffc9c 8f0a0008 lw t2, $0008(t8)            Load the 4 old signed bytes from address 000ffff8.
    OR 4 UNSIGNED BYTES
200ffc9c 9f0a0008 lwu t2, $0008(t8)           Load the 4 old unsigned bytes from address 000ffff8.
}
200ffca0 jr ra
{
    OR 1 BYTE
200ffca4 a1aa0000 sb t2, $0000(t5)            Store the old byte at the result address.
    OR 2 BYTES
200ffca4 a4aa0000 sh t2, $0000(t5)            Store the 2 old bytes at the result address.
    OR 4 BYTES
200ffca4 adaa0000 sw t2, $0000(t5)            Store the 4 old bytes at the result address.
}